// API响应基础结构 - 统一为API文档格式
export interface ApiResponse<T = any> {
  code: number;
  status: boolean;
  message: string;
  data?: T;
}

// 分页数据结构
export interface PaginationData<T> {
  total: number;
  pages: number;
}

// 分类列表数据结构
export interface CategoryListData extends PaginationData<Category> {
  categories: Category[];
}

// 文章列表数据结构
export interface PostListData extends PaginationData<Post> {
  posts: Post[];
}

// 分页响应结构
export interface PaginationResponse<T> extends ApiResponse<T> {}

// 文章列表响应结构
export interface PostListResponse extends ApiResponse<PostListData> {}

// 分类列表响应结构
export interface CategoryListResponse extends ApiResponse<CategoryListData> {}

// 博客分类模型
export interface Category {
  _id: string;
  title: string;
  desc: string;
  updatedBy: string;
  createdAt: string;
  updatedAt: string;
}

// 创建分类请求
export interface CreateCategoryRequest {
  title: string;
  desc: string;
}

// 更新分类请求
export interface UpdateCategoryRequest {
  title: string;
  desc: string;
}

// 文件模型 - 匹配API文档
export interface BlogFile {
  _id: string;
  key: string;
  size: number;
  mimetype: string;
  createdBy: string;
  createdAt: string;
  updatedAt: string;
}

// 博客文章模型 - 匹配API文档
export interface Post {
  _id: string;
  title: string;
  desc: string;
  file: BlogFile | string;
  category: Category | string;
  updatedBy: {
    _id: string;
    name: string;
    email: string;
    role: number;
    isVerified: boolean;
    profilePic: any;
    createdAt: string;
    updatedAt: string;
  } | string;
  createdAt: string;
  updatedAt: string;
}

// 创建文章请求
export interface CreatePostRequest {
  title: string;
  desc: string;
  file: string; // 文件ID
  category: string; // 分类ID
}

// 更新文章请求
export interface UpdatePostRequest {
  title: string;
  desc: string;
  file: string; // 文件ID
  category: string; // 分类ID
}

// 查询参数
export interface QueryParams {
  page?: number;
  size?: number;
  q?: string; // 搜索关键词
  category?: string; // 分类筛选（仅用于文章）
}

// 文件上传响应数据结构
export interface FileUploadData {
  key: string;
  _id: string;
}

// 上传文件响应
export interface FileUploadResponse extends ApiResponse<FileUploadData> {}

// 获取签名URL响应数据结构
export interface SignedUrlData {
  url: string;
}

// 获取签名URL响应
export interface SignedUrlResponse extends ApiResponse<SignedUrlData> {} 